package com.fs.sys.service;

import com.fs.sys.bean.dto.WorkbenchDTO;
import com.fs.sys.bean.enums.WorkbenchStatus;
import com.fs.sys.bean.enums.WorkbenchType;
import com.fs.sys.entityservice.WorkbenchEntityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 工作台服务
 *
 * @author LiuQi 2025/6/15-20:43
 * @version V1.0
 **/
@Service
public class WorkbenchService {
    @Autowired
    private WorkbenchEntityService entityService;

    /**
     * 根据租户查找租户的全局工作台，如果不存在，则新增空的全局工作台并返回
     * @return 租户全局工作台
     */
    public WorkbenchDTO getTenantWorkbench() {
        WorkbenchDTO dto = entityService.queryBuilder()
                .eq("type", WorkbenchType.TENANT)
                .findOneOpt()
                .orElse(null);
        if (null == dto) {
            // 理论上这里不会为空，默认新增租户时会添加工作台
            dto = new WorkbenchDTO();
            dto.setName("全局工作台");
            dto.setStatus(WorkbenchStatus.DRAFT);
            dto.setType(WorkbenchType.TENANT);
            dto = entityService.insert(dto);
        }

        return dto;
    }

    /**
     * 获取用户个性化的工作台配置，不存在时将会新增记录
     *
     * @param userId 用户id
     * @return 用户个性化工作台配置
     */
    public List<WorkbenchDTO> getUserWorkbench(String userId) {
        // 先查询租户工作台
        WorkbenchDTO tenant = this.getTenantWorkbench();

        List<WorkbenchDTO> workbenchDTOS = entityService.queryBuilder()
                .eq("create_user", userId)
                .eq("type", WorkbenchType.PERSONAL)
                .orderByDesc("create_time")
                .query();
        workbenchDTOS.add(0, tenant);
        return workbenchDTOS;
    }
}
